home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2001 May / SGI IRIX Base Documentation 2001 May.iso / usr / share / catman / a_man / cat1 / fsdb.z / fsdb
Encoding:
Text File  |  1998-10-20  |  25.5 KB  |  661 lines

  1.  
  2.  
  3.  
  4. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      fsdb - filesystem debugger for EFS
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ffffssssddddbbbb [----????] [----oooo] [----pppp''''_s_t_r_i_n_g''''] [----wwww] _s_p_e_c_i_a_l
  13.  
  14. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  15.      _f_s_d_b is applicable only to EFS filesystems.
  16.  
  17.      _f_s_d_b can be used to patch up a damaged filesystem after a crash.  It has
  18.      conversions to translate block and i-numbers into their corresponding
  19.      disk addresses.  Also included are mnemonic offsets to access different
  20.      parts of an inode.  These greatly simplify the process of correcting
  21.      control block entries or descending the filesystem tree.
  22.  
  23.      Because _f_s_d_b reads the disk raw, it is able to circumvent normal
  24.      filesystem security.  It also bypasses the buffer cache mechanism.
  25.      Hence, it is not advisable to use _f_s_d_b to write to a mounted filesystem.
  26.  
  27.      The options available to _f_s_d_b are:
  28.  
  29.      ----????           Display usage.
  30.  
  31.      ----oooo           Override some error conditions.
  32.  
  33.      ----pppp''''_s_t_r_i_n_g''''   Set prompt to _s_t_r_i_n_g.
  34.  
  35.      ----wwww           Open for write.
  36.  
  37.      _f_s_d_b contains several error-checking routines to verify inode and block
  38.      addresses.  These can be disabled if necessary by invoking _f_s_d_b with the
  39.      ----oooo option or by the use of the oooo command.
  40.  
  41.      _s_p_e_c_i_a_l is the name of a character device file.  _f_s_d_b searches /_e_t_c/_f_s_t_a_b
  42.      for the raw character device filename, if given the name of a filesystem.
  43.      A buffer management routine is used to retain commonly used blocks of
  44.      data in order to reduce the number of read system calls.  All assignment
  45.      operations result in an immediate write-through of the corresponding
  46.      block.  Since _f_s_d_b opens the raw device file, any write-throughs bypass
  47.      the filesystem buffer cache, resulting in a potential mismatch between
  48.      on-disk and buffer cache data structures.  Hence, it is recommended that
  49.      _f_s_d_b not be used to write to a mounted filesystem.  Note that in order to
  50.      modify any portion of the disk, _f_s_d_b must be invoked with the ----wwww option.
  51.  
  52.      Wherever possible, _a_d_b-like syntax was adopted to promote the use of _f_s_d_b
  53.      through familiarity.
  54.  
  55.      Numbers are considered hexadecimal by default.  However, the user has
  56.      control over how data are to be displayed or accepted.  The _b_a_s_e command
  57.      displays or sets the input/output base.  Once set, all input defaults to
  58.      this base and all output is shown in this base.  The base can be
  59.      overridden temporarily for input by preceding hexadecimal numbers with
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  71.  
  72.  
  73.  
  74.      0000xxxx, decimal numbers with 0000tttt, or octal numbers with 0000.  Hexadecimal
  75.      numbers beginning with aaaa----ffff or AAAA----FFFF must be preceded with 0000xxxx to distinguish
  76.      them from commands.
  77.  
  78.      Disk addressing by _f_s_d_b is at the byte level.  However, _f_s_d_b offers many
  79.      commands to convert a desired inode, directory entry, block, superblock,
  80.      and so forth to a byte address.  Once the address has been calculated,
  81.      _f_s_d_b records the result in _d_o_t.
  82.  
  83.      Several global values are maintained by _f_s_d_b:  the current base (referred
  84.      to as _b_a_s_e), the current address (referred to as _d_o_t), the current inode
  85.      (referred to as _i_n_o_d_e), the current count (referred to as _c_o_u_n_t), and the
  86.      current type (referred to as _t_y_p_e).  Most commands use the preset value
  87.      of _d_o_t in their execution.  For example,
  88.  
  89.           > 2:inode
  90.  
  91.      first sets the value of _d_o_t to 2, :::: alerts the start of a command, and
  92.      the _i_n_o_d_e command sets _i_n_o_d_e to 2.  A count is specified after a ,,,,.  Once
  93.      set, _c_o_u_n_t remains at this value until a new command is encountered,
  94.      which resets the value back to 1 (the default).  So, if
  95.  
  96.           > 2000,400/X
  97.  
  98.      is typed, 400 hexadecimal longs are listed from 2000, and when completed
  99.      the value of _d_o_t is 2000 + 400 * sizeof (long).  If a carriage return is
  100.      then typed, the output routine uses the current values of _d_o_t, _c_o_u_n_t, and
  101.      _t_y_p_e and displays 400 more hexadecimal longs.  An **** causes the entire
  102.      block to be displayed.
  103.  
  104.      End of block and file are maintained by _f_s_d_b.  When displaying data as
  105.      blocks, an error message is displayed when the end of the block is
  106.      reached.  When displaying data using the _d_b, _d_i_r_e_c_t_o_r_y, or _f_i_l_e commands,
  107.      an error message is displayed if the end of file is reached.  This is
  108.      needed primarily to avoid passing the end of a directory or file and
  109.      getting unknown and unwanted results.
  110.  
  111.      Examples showing several commands and the use of carriage return are:
  112.  
  113.           > 2:ino; 0:dir?d
  114.  
  115.      or
  116.  
  117.           > 2:ino; 0:db:block?d
  118.  
  119.      The two examples are synonymous for getting to the first directory entry
  120.      of the root of the filesystem.  Once there, subsequent carriage returns
  121.      (or + or -) advance to subsequent entries.
  122.  
  123.      Note that:
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  137.  
  138.  
  139.  
  140.           > 2:inode; :ls /
  141.  
  142.      or
  143.  
  144.           > 2:inode
  145.           > :ls /
  146.  
  147.      is again synonymous.
  148.  
  149. EEEEXXXXPPPPRRRREEEESSSSSSSSIIIIOOOONNNNSSSS
  150.      _f_s_d_b recognizes the following symbols.  There should be no white space
  151.      between the symbols and the arguments.
  152.  
  153.      ccccaaaarrrrrrrriiiiaaaaggggeeee rrrreeeettttuuuurrrrnnnn
  154.               Update the value of _d_o_t by the current value of _t_y_p_e and display
  155.               using the current value of _c_o_u_n_t.
  156.  
  157.      ####        Numeric expressions can be composed of +, -, *, and % operators
  158.               (evaluated left to right) and can use parentheses.  Once
  159.               evaluated, the value of _d_o_t is updated.
  160.  
  161.      ,,,,_c_o_u_n_t   Count indicator.  The global value of _c_o_u_n_t is updated to _c_o_u_n_t.
  162.               The value of _c_o_u_n_t remains until a new command is run.  A count
  163.               specifier of **** attempts to show a _b_l_o_c_k's worth of information.
  164.               The default for _c_o_u_n_t is 1.
  165.  
  166.      ????_f       Display in structured style with format specifier _f (see
  167.               FORMATTED OUTPUT section).
  168.  
  169.      ////_f       Display in unstructured style with format specifier _f (see
  170.               FORMATTED OUTPUT section).
  171.  
  172.      ....        The value of _d_o_t.
  173.  
  174.      ++++_e       Increment the value of _d_o_t by the expression _e.  The amount
  175.               actually incremented is dependent on the size of _t_y_p_e:
  176.  
  177.  
  178.                    dot = dot + e * sizeof (type)
  179.  
  180.               The default for _e is 1.
  181.  
  182.      ----_e       Decrement the value of _d_o_t by the expression _e (see +).
  183.  
  184.      ****_e       Multiply the value of _d_o_t by the expression _e.  Multiplication
  185.               and division do not use _t_y_p_e.  In the above calculation of _d_o_t,
  186.               consider the sizeof ( _t_y_p_e) to be 1.
  187.  
  188.      %%%%_e       Divide the value of _d_o_t by the expression _e (see *).
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  203.  
  204.  
  205.  
  206.      <<<<_n_a_m_e    Restore an address saved in register _n_a_m_e.  _n_a_m_e must be a
  207.               single letter or digit.
  208.  
  209.      >>>>_n_a_m_e    Save an address in register _n_a_m_e.  _n_a_m_e must be a single letter
  210.               or digit.
  211.  
  212.      ====_f       Display indicator.  If _f is a legitimate format specifier (see
  213.               FORMATTED OUTPUT section), then the value of _d_o_t is displayed
  214.               using format specifier _f.  Otherwise, assignment is assumed (see
  215.               next item).
  216.  
  217.      ====[_e]
  218.  
  219.      ====[_s]     Assignment indicator.  The address pointed to by _d_o_t has its
  220.               contents changed to the value of the expression _e or to the
  221.               ASCII representation of the quoted (") string _s.  This may be
  222.               useful for changing directory names or ASCII file information.
  223.  
  224.      ====++++_e      Incremental assignment.  The address pointed to by _d_o_t has its
  225.               contents incremented by expression _e.
  226.  
  227.      ====----_e      Decremental assignment.  The address pointed to by _d_o_t has its
  228.               contents decremented by expression _e.
  229.  
  230. CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS
  231.      A command must be prefixed by a :::: character.  Only enough letters of the
  232.      command to uniquely distinguish it are needed.  Multiple commands can be
  233.      entered on one line by separating them by a space, tab, or ;;;;.
  234.  
  235.      In order to view a potentially unmounted disk in a reasonable manner,
  236.      _f_s_d_b offers the _c_d, _p_w_d, _l_s, and _f_i_n_d commands.  The functionality of
  237.      these commands substantially matches those of its IRIX counterparts (see
  238.      individual commands for details).  The ****, ????, and [[[[----]]]] wildcard characters
  239.      are available.
  240.  
  241.      bbbbaaaasssseeee====_b      Display or set base.  As stated above, all input and output
  242.                  is governed by the current _b_a_s_e.  If the ====bbbb is left off, the
  243.                  current _b_a_s_e is displayed.  Otherwise, the current _b_a_s_e is
  244.                  set to _b.  Note that this is interpreted using the old value
  245.                  of _b_a_s_e.  To ensure correctness, use the 0000, 0000tttt, or 0000xxxx prefix
  246.                  when changing the _b_a_s_e.  The default for _b_a_s_e is hexadecimal.
  247.  
  248.      bbbblllloooocccckkkk       Convert the value of _d_o_t to a block address.
  249.  
  250.      ccccdddd _d_i_r      Change the current directory to directory _d_i_r.  The current
  251.                  values of _i_n_o_d_e and _d_o_t are also updated.  If no _d_i_r is
  252.                  specified, then change directories to inode 2 (////).
  253.  
  254.      ccccgggg          Convert the value of _d_o_t to a cylinder group.
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  269.  
  270.  
  271.  
  272.      _d_i_r_e_c_t_o_r_y   If the current _i_n_o_d_e is a directory, then the value of _d_o_t is
  273.                  converted to a directory slot offset in that directory.  _d_o_t
  274.                  now points to this entry.
  275.  
  276.      _f_i_l_e        The value of _d_o_t is taken as a relative block count from the
  277.                  beginning of the file.  The value of _d_o_t is updated to the
  278.                  first byte of this block.
  279.  
  280.      ffffiiiinnnndddd _d_i_r [----nnnnaaaammmmeeee _n] [----iiiinnnnuuuummmm _i]
  281.                  Find files by name or i-number.  _f_i_n_d recursively searches
  282.                  directory _d_i_r and below for filenames whose i-number matches
  283.                  _i or whose name matches pattern _n.  Note that only one of the
  284.                  two options (----nnnnaaaammmmeeee or ----iiiinnnnuuuummmm) can be used at one time.  Also,
  285.                  the ----pppprrrriiiinnnntttt is not needed or accepted.
  286.  
  287.      ffffiiiillllllll====_p      Fill an area of disk with pattern _p.  The area of disk is
  288.                  delimited by _d_o_t and _c_o_u_n_t.
  289.  
  290.      _i_n_o_d_e       Convert the value of _d_o_t to an inode address.  If successful,
  291.                  the current value of _i_n_o_d_e is updated as well as the value of
  292.                  _d_o_t.  As a convenient shorthand, if ::::iiiinnnnooooddddeeee appears at the
  293.                  beginning of the line, the value of _d_o_t is set to the current
  294.                  _i_n_o_d_e and that inode is displayed in inode format.
  295.  
  296.      llllssss [----RRRR] [----llll] _p_a_t_1 _p_a_t_2 ...
  297.                  List directories or files.  If no file is specified, the
  298.                  current directory is assumed.  Either or both of the options
  299.                  can be used (but, if used, must be specified before the
  300.                  filename specifiers).  Also, as stated above, wildcard
  301.                  characters are available and multiple arguments can be given.
  302.                  The long listing shows only the i-number and the name; use
  303.                  the _i_n_o_d_e command with ????iiii to get more information.  The
  304.                  output is sorted in alphabetical order.  If either the ----RRRR or
  305.                  the ----llll options is used, then the files can have a character
  306.                  following the filename, indicating the type of the file.
  307.                  Directories have a ////, symbolic links have a @@@@, AF_UNIX
  308.                  address family sockets have a ==== and fifos have an ffff.  Regular
  309.                  files and block and character device files have an **** if they
  310.                  are executable.  If the file type is unknown, then a ???? is
  311.                  printed.
  312.  
  313.      oooovvvveeeerrrrrrrriiiiddddeeee    Toggle the value of override.  Some error conditions can be
  314.                  overridden if override is toggled on.
  315.  
  316.      pppprrrroooommmmpppptttt _p    Change the _f_s_d_b prompt to _p.  _p must be surrounded by double
  317.                  quotes (").
  318.  
  319.      ppppwwwwdddd         Display the current working directory.
  320.  
  321.      qqqquuuuiiiitttt        Quit _f_s_d_b.
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  335.  
  336.  
  337.  
  338.      ssssbbbb          The value of _d_o_t is taken as the basic block number and then
  339.                  converted to the address of the superblock in that cylinder
  340.                  group.  As a shorthand, ::::ssssbbbb at the beginning of a line sets
  341.                  the value of _d_o_t to the superblock and displays it in
  342.                  superblock format.
  343.  
  344.      !!!! sssshhhh        Escape to shell.
  345.  
  346. IIIINNNNOOOODDDDEEEE CCCCOOOOMMMMMMMMAAAANNNNDDDDSSSS
  347.      In addition to the above commands, there are several commands that deal
  348.      with inode fields and operate directly on the current _i_n_o_d_e (they still
  349.      require the ::::).  They can be used to display more easily or change the
  350.      particular fields.  The value of _d_o_t is only used by the ::::ddddbbbb, ::::lllleeeennnn, and
  351.      ::::ooooffffffff commands.  Upon completion of the command, the value of _d_o_t is
  352.      changed to point to that particular field.  For example,
  353.  
  354.           > :ln=+1
  355.  
  356.      increments the link count of the current _i_n_o_d_e and set the value of _d_o_t
  357.      to the address of the link count field.  It is important to know the
  358.      format of the disk inode structure and the size and alignment of the
  359.      respective fields; otherwise the output of these commands is not
  360.      coherent.  The disk inode structure is available in <_s_y_s/_f_s/_e_f_s__i_n_o._h>.
  361.  
  362.      aaaatttt   Access time.
  363.  
  364.      cccctttt   Creation time.
  365.  
  366.      ddddbbbb   Use the current value of _d_o_t as an index into the list of extents
  367.           stored in the disk inode to get the starting disk block number
  368.           associated with the corresponding extent.  Extents number from 0 to
  369.           11.  In order to display the block itself, you need to pipe this
  370.           result into the _b_l_o_c_k command.  For example,
  371.  
  372.  
  373.                > 1:db:block,20/X
  374.  
  375.           gets the contents of disk block number field of extent number 1 from
  376.           the inode and converts it to a block address.  Twenty longs are then
  377.           displayed in hexadecimal (see the FORMATTED OUTPUT section).
  378.  
  379.      ggggeeeennnn  Inode generation number.
  380.  
  381.      ggggiiiidddd  Group ID.
  382.  
  383.      llllnnnn   Link count.
  384.  
  385.      lllleeeennnn  Use the current value of _d_o_t as an index into the list of extents
  386.           stored in the disk inode to get the length associated with the
  387.           corresponding extent.  Extents number from 0 to 11.  This field is
  388.           one byte long.  For example,
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  401.  
  402.  
  403.  
  404.  
  405.                > 1:len/b
  406.  
  407.           displays the contents of the len field of extent number 1.
  408.  
  409.      mmmmtttt   Modification time.
  410.  
  411.      mmmmdddd   Mode.
  412.  
  413.      mmmmaaaajjjj  Major device number.
  414.  
  415.      mmmmiiiinnnn  Minor device number.
  416.  
  417.      nnnneeeexxxx  Number of extents.
  418.  
  419.      nnnnmmmm   Although listed here, this command actually operates on the
  420.           directory name field.  Once poised at the desired directory entry
  421.           (using the _d_i_r_e_c_t_o_r_y command), this command allows you to change or
  422.           display the directory name.  For example,
  423.  
  424.  
  425.                > 7:dir:nm="foo"
  426.  
  427.           gets the seventh directory entry of the current _i_n_o_d_e and changes
  428.           its name to foo.  Names have to be the same size as the original
  429.           name.  If the new name is smaller, it is padded with ####.  If it is
  430.           larger, the string is truncated to fit and a warning message to this
  431.           effect is displayed.
  432.  
  433.      ooooffffffff  Use the current value of _d_o_t as an index into the list of extents
  434.           stored in the disk inode to get the logical block offset associated
  435.           with the corresponding extent.  Extents number from 0 to 11.  This
  436.           field is three bytes long.  For example,
  437.  
  438.  
  439.                > 3:off,3/b
  440.  
  441.           displays the contents of the off field of extent number 3.
  442.  
  443.      sssszzzz   File size.
  444.  
  445.      uuuuiiiidddd  User ID.
  446.  
  447. FFFFOOOORRRRMMMMAAAATTTTTTTTEEEEDDDD OOOOUUUUTTTTPPPPUUUUTTTT
  448.      There are two styles and many format types.  The two styles are
  449.      structured and unstructured.  Structured output is used to display
  450.      inodes, directories, superblocks, and the like.  Unstructured output only
  451.      displays raw data.  The following table shows the different ways of
  452.      displaying:
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  467.  
  468.  
  469.  
  470.      ????
  471.           cccc     Display as cylinder groups
  472.           iiii     Display as inodes
  473.           IIII     Display as inodes (all direct extents)
  474.           dddd     Display as directories
  475.           ssss     Display as superblocks
  476.           eeee     Display as extents
  477.  
  478.      ////
  479.           bbbb     Display as bytes
  480.           cccc     Display as characters
  481.           oooo OOOO   Display as octal shorts or longs
  482.           dddd DDDD   Display as decimal shorts or longs
  483.           xxxx XXXX   Display as hexadecimal shorts or longs
  484.  
  485.      The format specifier immediately follows the //// or ???? character.  The
  486.      values displayed by ////bbbb and all ????  formats are displayed in the current
  487.      _b_a_s_e.  Also, _t_y_p_e is appropriately updated upon completion.
  488.  
  489. EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS
  490.      > :base         Display the current input/output base (hexadecimal by
  491.                      default).
  492.  
  493.      > :base=0xa     Change the current input/output base to decimal.
  494.  
  495.      > 0t2000+(0t400%(0t20+0t20))=D
  496.                      Display 2010 in decimal (use of _f_s_d_b as a calculator for
  497.                      complex arithmetic).  The 0000tttt indicates that the numbers
  498.                      are to be interpreted as decimal numbers and are
  499.                      necessary only if the current base is not decimal.
  500.                      Brackets should be used to force ordering since _f_s_d_b does
  501.                      not force the normal ordering of operators.  Note that %%%%
  502.                      is the division symbol.
  503.  
  504.      > 386:ino?i     Display i-number 386 in an inode format.  This now
  505.                      becomes the current _i_n_o_d_e.
  506.  
  507.      > :ln=4         Change the link count for the current _i_n_o_d_e to 4.
  508.  
  509.      > :ln/x         Display the link count as a hexadecimal short.
  510.  
  511.      > :ln=+1        Increment the link count by 1.
  512.  
  513.      > :sz/D         Display the size field as a decimal long.
  514.  
  515.      > :sz/X         Display the size field as a hexadecimal long.
  516.  
  517.      > :ct=X         Display the creation time as a hexadecimal long.
  518.  
  519.      > :mt=t         Display the modification time in time format.
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  533.  
  534.  
  535.  
  536.      > 0:db,3/b      Display the block number of the first extent as 3 bytes.
  537.                      The block number has to be printed out as bytes, because
  538.                      of alignment considerations.
  539.  
  540.      > 0:file/c      Display, in ASCII, block zero of the file associated with
  541.                      the current _i_n_o_d_e.
  542.  
  543.      > 5:dir:inode; 0:file,*/c
  544.                      Change the current inode to that associated with the
  545.                      fifth directory entry (numbered from zero) of the current
  546.                      _i_n_o_d_e.  The first logical block of the file is then
  547.                      displayed in ASCII.
  548.  
  549.      > :sb           Display the superblock of this filesystem.
  550.  
  551.      > 0:cg?c        Display cylinder group information and summary for the
  552.                      first cylinder group (cg number 0).
  553.  
  554.      > 7:dir:nm="name"
  555.                      Change the name field in the directory slot to _n_a_m_e.
  556.  
  557.      > 2:db:block,*?d
  558.                      Display the third block of the current _i_n_o_d_e as directory
  559.                      entries.
  560.  
  561.      > 0:db=0x43b    Change the disk block number associated with extent 0 of
  562.                      the inode to 0x43b.
  563.  
  564.      > 0:len=0x4     Change the length of extent 0 to 4.
  565.  
  566.      > 1:off=0xa     Change the logical block offset of extent 1 to 4.
  567.  
  568.      > 0x43b:block/X Display the first four bytes of the contents of block
  569.                      0x43b.
  570.  
  571.      > 0x43b:block=0xdeadbeef
  572.                      Set the contents of disk block number 0x43b to
  573.                      0xdeadbeef.  0xdeadbeef may be truncated depending on the
  574.                      current _t_y_p_e.
  575.  
  576.      > 2050=0xffffffff
  577.                      Set the contents of address 2050 to 0xffffffff.
  578.                      0xffffffff may be truncated depending on the current
  579.                      _t_y_p_e.
  580.  
  581.      > 1c92434="this is some text"
  582.                      Place the ASCII for the string at 1c92434.
  583.  
  584.      > 2:inode:0:db:block,*?d
  585.                      Change the current inode to 2.  Take the first block
  586.                      associated with this (root) inode and display its
  587.                      contents as directory entries.  It stops prematurely if
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. ffffssssddddbbbb((((1111MMMM))))                                                              ffffssssddddbbbb((((1111MMMM))))
  599.  
  600.  
  601.  
  602.                      the EOF is reached.
  603.  
  604. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  605.      fsck(1M), dir(4), efs(4), inode(4).
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.